//
//  ZZCHomeTableViewCell.swift
//  weibo
//
//  Created by zhangzuchao on 2017/3/31.
//  Copyright © 2017年 zhangZuChao. All rights reserved.
//

import UIKit
import SnapKit


class ZZCHomeTableViewCell: UITableViewCell {

    
    //  懒加载控件
    //  原创微博视图
    fileprivate lazy var originalView: ZZCHomeOriginalView = ZZCHomeOriginalView()
    //  按钮栏
    fileprivate lazy var toolBar: ZZCHomeToolbar = ZZCHomeToolbar()
    //  转发微博视图
    fileprivate lazy var retweetView: ZZCHomeRetweetView = ZZCHomeRetweetView()
    //  记录toolBar的顶部约束
    var toolBarTopConstraint: Constraint?
    
    //  数据绑定
    var statusViewModel: ZZCStatusViewModel? {
        didSet {
            originalView.statusViewModel = statusViewModel
            toolBar.statusViewModel = statusViewModel
            
            //   把之前的toolbar的顶部约束卸载掉,重写根据数据创建对应的顶部约束
            toolBarTopConstraint?.deactivate()
            
            //  判断是否有转发微博数据
            if statusViewModel?.status?.retweeted_status != nil {
                //  如果想要更新某个约束,如果约束不存在那么会崩溃
                toolBar.snp.makeConstraints({ (make) in
                    toolBarTopConstraint = make.top.equalTo(retweetView.snp.bottom).constraint
                })
                //  有转发微博
                retweetView.statusViewModel = statusViewModel
                //  有转发显示转发视图
                retweetView.isHidden = false
            } else {
                //  没有转发微博
                //  隐藏转发微博视图
                retweetView.isHidden = true
                //   如果约束不存在那么会崩溃
                toolBar.snp.makeConstraints({ (make) in
                    toolBarTopConstraint = make.top.equalTo(originalView.snp.bottom).constraint
                })
            }
            
            
        }
    }
    
    //  首先代码创建cell
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        setupUI()
    }
    //  不支持xib
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    //  添加控件设置约束
    fileprivate func setupUI() {
        //  设置contentView的背景色
        contentView.backgroundColor = UIColor(white: 0.95, alpha: 1.0)
        //  添加子控件
        contentView.addSubview(originalView)
        contentView.addSubview(retweetView)
        contentView.addSubview(toolBar)
        
        originalView.snp.makeConstraints { (make) in
            make.top.equalTo(contentView).offset(8)
            make.leading.equalTo(contentView)
            make.trailing.equalTo(contentView)
        }
        
        retweetView.snp.makeConstraints { (make) in
            make.top.equalTo(originalView.snp.bottom)
            make.leading.trailing.equalTo(originalView)
        }
        
        toolBar.snp.makeConstraints { (make) in
            //  记录toolbar的顶部约束
            toolBarTopConstraint = make.top.equalTo(retweetView.snp.bottom).constraint
            make.leading.trailing.equalTo(retweetView)
            make.height.equalTo(35)
            //  正确写法, 确定cell的高度
            make.bottom.equalTo(contentView)
        }
        
        
        
        
    }
    
}
